#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

int main(){
	key_t key=ftok("./",66);
	if(key==-1){
		perror("ftok");
		exit(1);
	}
	int msqid=msgget(key,0666 | IPC_CREAT);
	if(msqid==-1){
		perror("msgget");
		exit(1);
	}
	char buf[128]={0};
	fgets(buf,sizeof(buf),stdin);
	buf[strlen(buf)-1]='\0';
	int res=msgsnd(msqid,buf,strlen(buf),0);
	if(res==-1){
		perror("msgsnd");
		msgctl(msqid,IPC_RMID,NULL);
		exit(1);
	}
	memset(buf,0,sizeof(buf));
	
	ssize_t byte=msgrcv(msqid,buf,sizeof(buf),0,MSG_NOERROR);
	printf("%s\n",buf);
	int ret= msgctl(msqid,IPC_RMID,NULL);
	if(ret==-1){
		perror("msgctl");
		exit(1);
	}
	return 0;
}
